home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 3 / Amoszine 3.adf / Celebrity_source / dual_playfield.AMOS / dual_playfield.amosSourceCode
AMOS Source Code  |  1992-02-26  |  5KB  |  200 lines

  1. ' ************************************************************** 
  2. '
  3. '                    Dual Playfield Example  
  4. '
  5. '                      by Paul Nordovics 
  6. '
  7. ' **************************************************************   
  8. '  
  9. ' ******************** 
  10. ' set up source screen 
  11. ' ******************** 
  12. Screen Open 2,320,256,4,Lowres
  13. Curs Off : Flash Off : Hide 
  14. Screen Hide 
  15. Cls 0 : Paper 0 : Pen 1
  16. Print "    HALL OF FAME"
  17. Print "PSN...........999999"
  18. Print "SIN...........888888"
  19. Print "NIB...........777777"
  20. Print "AVH...........666666"
  21. Print "NSD...........555555"
  22. Print "DRI...........444444"
  23. Print "OZZ...........333333"
  24. Print "SEN...........222222"
  25. Print "TAS...........111111"
  26. Print "AAA...........000000"
  27. '
  28. ' *************************************  
  29. ' set up bottom layer of dual playfield  
  30. ' *************************************  
  31. Screen Open 1,320,512,2,Lowres
  32. Curs Off : Flash Off 
  33. Colour 0,0 : Colour 1,0
  34. '
  35. ' *************************
  36. ' draw chequerboard pattern
  37. ' *************************  
  38. _INK=0
  39. For Y=0 To 15
  40.    For X=0 To 20
  41.       Cls _INK,X*16,Y*16 To(X*16)+16,(Y*16)+16
  42.       _INK=1-_INK
  43.    Next X
  44. Next Y
  45. '
  46. ' ************************************** 
  47. ' copy top half of screen to bottom half 
  48. ' ************************************** 
  49. Screen Copy 1,0,0,320,255 To 1,0,256
  50. '
  51. ' ********************************** 
  52. ' set up top layer of dual playfield 
  53. ' ********************************** 
  54. Screen Open 0,320,256,4,Lowres
  55. Curs Off : Flash Off 
  56. Cls 0 : Paper 0
  57. '
  58. Wait Vbl 
  59. Dual Playfield 0,1
  60. Screen Display 0,128,40,320,256
  61. '
  62. ' ****************** 
  63. ' set screen colours 
  64. ' ****************** 
  65. Screen 0
  66. Colour 1,$FFF
  67. Colour 9,0
  68. '
  69. ' ********************************   
  70. ' set up rainbow with dummy values   
  71. ' ********************************   
  72. Set Rainbow 0,9,256,"","",""
  73. '
  74. ' ***********
  75. ' load values
  76. ' ***********
  77. Restore CLIST
  78. For K=0 To 255
  79.    V=15
  80.    If K<32 or K>223
  81.       Read V
  82.    End If 
  83.    Rain(0,K)=V
  84. Next K
  85. '
  86. ' ************ 
  87. ' show rainbow 
  88. ' ************ 
  89. Rainbow 0,0,40,256
  90. '
  91. ' ******************************************************** 
  92. ' bottom layer is scrolled using AMAL i.e interrupt driven 
  93. ' ******************************************************** 
  94. OFFSET$="A:LY=0;B:LY=Y+R0;IY>256JA;P;JB"
  95. _SCROLL_SPEED=1
  96. Channel 0 To Screen Offset 1
  97. Amal 0,OFFSET$
  98. Amreg(0,0)=_SCROLL_SPEED
  99. Amal On 0
  100. '
  101. Wait 50
  102. '
  103. ' *********
  104. ' main loop
  105. ' *********
  106. Do 
  107.    ' ************************ 
  108.    ' call screen copy routine 
  109.    ' ************************ 
  110.    _APPEAR[2,0,0,160,88,0,80,64,1,0]
  111.    '
  112.    Wait 150
  113.    '
  114.    ' ************************** 
  115.    ' fade colour 1 of top layer 
  116.    ' ************************** 
  117.    Repeat 
  118.       Wait 3
  119.       V=Colour(1)
  120.       Add V,-$111
  121.       Colour 1,V
  122.    Until Colour(1)=0
  123.    '
  124.    ' *******
  125.    ' tidy up
  126.    ' *******
  127.    Cls 0
  128.    Colour 1,$FFF
  129.    '
  130.    Wait 50
  131. Loop 
  132. '
  133. Procedure _APPEAR[SOURCE,X1,Y1,X2,Y2,DEST,X,Y,SPEED,_DIRECTION]
  134.    If _DIRECTION=0
  135.       LINE_SOURCE=Y1
  136.       LINE_START=Y+(Y2-Y1)
  137.       LINE_END=Y
  138.       Repeat 
  139.          For K=LINE_START To LINE_END Step -1
  140.             Screen Copy SOURCE,X1,LINE_SOURCE,X2+1,LINE_SOURCE+1 To DEST,X,K
  141.          Next K
  142.          If SPEED>0
  143.             Wait SPEED
  144.          End If 
  145.          Inc LINE_END
  146.          Inc LINE_SOURCE
  147.       Until LINE_END=LINE_START+1
  148.    End If 
  149.    If _DIRECTION=1
  150.       LINE_SOURCE=Y2
  151.       LINE_START=Y
  152.       LINE_END=Y+(Y2-Y1)
  153.       Repeat 
  154.          For K=LINE_START To LINE_END Step 1
  155.             Screen Copy SOURCE,X1,LINE_SOURCE,X2+1,LINE_SOURCE+1 To DEST,X,K
  156.          Next K
  157.          If SPEED>0
  158.             Wait SPEED
  159.          End If 
  160.          Dec LINE_END
  161.          Dec LINE_SOURCE
  162.       Until LINE_END=LINE_START-1
  163.    End If 
  164.    If _DIRECTION=2
  165.       LINE_SOURCE=X2
  166.       LINE_START=X
  167.       LINE_END=X+(X2-X1)
  168.       Repeat 
  169.          For K=LINE_START To LINE_END Step 1
  170.             Screen Copy SOURCE,LINE_SOURCE,Y1,LINE_SOURCE+1,Y2+1 To DEST,K,Y
  171.          Next K
  172.          If SPEED>0
  173.             Wait SPEED
  174.          End If 
  175.          Dec LINE_END
  176.          Dec LINE_SOURCE
  177.       Until LINE_END=LINE_START-1
  178.    End If 
  179.    If _DIRECTION=3
  180.       LINE_SOURCE=X1
  181.       LINE_START=X+(X2-X1)
  182.       LINE_END=X
  183.       Repeat 
  184.          For K=LINE_START To LINE_END Step -1
  185.             Screen Copy SOURCE,LINE_SOURCE,Y1,LINE_SOURCE+1,Y2+1 To DEST,K,Y
  186.          Next K
  187.          If SPEED>0
  188.             Wait SPEED
  189.          End If 
  190.          Inc LINE_END
  191.          Inc LINE_SOURCE
  192.       Until LINE_END=LINE_START+1
  193.    End If 
  194. End Proc
  195. '
  196. ' -------------------------------------------------------------
  197. '
  198. CLIST:
  199. Data 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15
  200. Data 15,15,14,14,13,13,12,12,11,11,10,10,9,9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1,0,0